가비지 콜렉터(Garbage Collector, GC)
Java에서 사용되는 자동 메모리 관리 시스템
힙(Heap) 메모리 영역의 메모리를 관리한다
목적
더 이상 사용되지 않는 메모리를 자동으로 식별하고 해제한다
메모리 누수를 방지하고 개발자의 메모리 관리 부담을 줄인다
작동 원리
루트 세트(Root Set)에서 시작하여 객체 그래프를 순회한다
도달 가능한 객체는 살아있는 것으로 표시한다
도달할 수 없는 객체는 가비지로 간주하고 수거한다
가비지 컬렉션 단계
Mark : 살아있는 객체를 식별하고 표시
Sweep : 표시되지 않은 객체(가비지)를 해제
Compact(선택적) : 남은 객체를 한 곳으로 모아 메모리 단편화를 줄임
가비지 컬렉션 유형
- Minor GC : 새로 생성된 객체가 주로 있는 Young Generation을 대상으로 한다
- Major GC(Full GC) : 전체 힙 메모리를 대상으로 한다
장점
- 메모리 누수 방지
- 개발자의 메모리 관리 부담 감소
- 댕글링 포인터 문제 해결